package org.dromara.quick.chat.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.github.linpeilie.annotations.AutoMapper;
import io.github.linpeilie.annotations.AutoMappers;
import lombok.Data;
import org.dromara.quick.chat.model.vo.ImSocialCommentVO;
import org.springframework.data.mongodb.core.mapping.Document;

import java.util.Date;

/**
 * 社交软件中的评论表，用于存储用户对各种主题的评论信息
 * @TableName im_social_comment
 */
@TableName(value ="im_social_comment")
@Data
@AutoMappers({
    @AutoMapper(target = ImSocialCommentVO.class)
})
@Document(collection = "im_social_comment")
public class ImSocialComment {
    /**
     * 评论记录的唯一标识，系统自动生成，用于区分不同的评论
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 发表评论的用户编号，关联用户表中的用户编号
     */
    private Long userId;

    /**
     * 评论所针对的对象类型，1 代表动态，2 代表小区，3 代表诊所，4 代表健身房等
     */
    private Integer type;

    /**
     * 评论所针对的具体主题的编号，如动态编号、小区编号等，需关联对应表
     */
    private Long commentSubjectId;

    /**
     * 评论时用户的 IP 所属地区
     */
    private String ipLocation;

    /**
     * 评论人的头像地址，避免因用户更改头像导致显示问题
     */
    private String commenterAvatar;

    /**
     * 评论人的昵称，避免因用户更改昵称导致显示问题
     */
    private String commenterNickname;

    /**
     * 评论内容的类型，1 代表文字评论，2 代表表情评论
     */
    private Integer commentType;

    /**
     * 评论的具体内容，如果是文字评论则为文字内容，如果是表情评论则为表情地址
     */
    private String commentContent;

    /**
     * 评论获得的点赞总数，初始值为 0
     */
    private Integer likeCount;

    /**
     * 如果该评论是回复其他评论，这里记录被回复人的昵称
     */
    private String replyToNickname;

    /**
     * 如果该评论是回复其他评论，这里记录被回复人的用户编号
     */
    private Long replyToId;

    /**
     * 回复品论的评论id
     */
    private Long replyToCommentId;

    /**
     * 评论的审核状态，0 代表未审核，1 代表审核通过，2 代表审核不通过
     */
    private Integer reviewStatus;

    /**
     * 审核的具体说明和描述
     */
    private String reviewDescription;

    /**
     * 评论记录的创建时间，系统自动记录
     */
    private Date createTime;
}
